// 数字相关校验 - 按照validator.js标准

// 是否为整数
export function isInt(str) {
  if (!str) return true
  const reg = /^((-?[1-9]\d*)|0)$/
  return reg.test(str)
}

// 是否为浮点数
export function isFloat(str) {
  if (!str) return true
  const reg = /^-?\d+\.\d+$/
  return reg.test(str)
}

// 是否为纯数字
export function isNumeric(str) {
  if (!str) return true
  const reg = /^\d+$/
  return reg.test(str)
}

// 是否为正整数
export function isPositiveInt(str) {
  if (!str) return true
  const reg = /^[1-9]\d*$/
  return reg.test(str)
}

// 是否为负整数
export function isNegativeInt(str) {
  if (!str) return true
  const reg = /^-[1-9]\d*$/
  return reg.test(str)
}

// 是否为非负整数（包含0）
export function isNonNegativeInt(str) {
  if (!str) return true
  const reg = /^(0|[1-9]\d*)$/
  return reg.test(str)
}

// 是否为正数
export function isPositiveNumber(str) {
  if (!str) return true
  const reg = /^\d*\.?\d+$/
  return reg.test(str)
}

// 是否为负数
export function isNegativeNumber(str) {
  if (!str) return true
  const reg = /^-\d*\.?\d+$/
  return reg.test(str)
}

// 是否为两位正整数
export function isTwoDigit(str) {
  if (!str) return true
  const reg = /^(([1-9]\d)|(0[1-9]))$/
  return reg.test(str)
}

// 通用小数位数校验
export function isDecimal(str, maxDecimals = 2) {
  if (!str) return true
  const reg = new RegExp(`^(0|[1-9]\\d*)(\\.\\d{1,${maxDecimals}})?$`)
  return reg.test(str)
}

// 是否为1位小数
export function isOneDecimal(str) {
  return isDecimal(str, 1)
}

// 是否为2位小数
export function isTwoDecimal(str) {
  return isDecimal(str, 2)
}

// 是否为3位小数
export function isThreeDecimal(str) {
  return isDecimal(str, 3)
}